// 标签管理服务 - 适配后端数据结构
export class TagService {
  constructor() {
    // GB国标行业分类（根据后端SQL数据）
    this.gbTags = {
      '农、林、牧、渔业': ['农业', '林业', '畜牧业', '渔业', '农、林、牧、渔业专业及辅助性活动'],
      '采矿业': ['煤炭开采', '石油和天然气开采', '金属开采', '开采专业及辅助性活动', '其他采矿业'],
      '制造业': [
        '农副产品加工', '食品制造业', '酒、饮料和精制茶制造业', '烟草制品业', '纺织业', '纺织服装、服饰业',
        '皮革、毛皮、羽毛及其制品和制鞋业', '木材加工和木、竹、藤、棕、草制品业', '家具制造业',
        '造纸和纸制品业', '印刷和记录媒介复制业', '文教、工美、体育和娱乐用品制造业', '石油、煤炭及其他燃料加工业',
        '化学原料和化学制品制造业', '医药制造业', '橡胶和塑料制品业', '非金属矿物制品业', '黑色金属冶炼和压延加工业',
        '有色金属冶炼和压延加工业', '金属制品业', '通用设备制造业', '专用设备制造业', '汽车制造业',
        '铁路、船舶、航空航天和其他运输设备制造业', '电气机械和器材制造业', '计算机、通信和其他电子设备制造业',
        '仪器仪表制造业', '其他制造业', '废弃资源综合利用业', '金属制品、机械和设备修理业'
      ],
      '电力、热力生产和供应业': ['电力、热力生产和供应业', '燃气生产和供应业', '水的生产和供应业'],
      '建筑业': ['房屋建筑业', '土木工程建筑业', '建筑安装业', '建筑装饰、装修和其他建筑业'],
      '批发和零售业': ['批发业', '零售业'],
      '交通运输、仓储和邮政业': [
        '铁路运输业', '道路运输业', '水上运输业', '航空运输业', '管道运输业',
        '多式联运和运输代理业', '装卸搬运和仓储业', '邮政业'
      ],
      '住宿和餐饮业': ['住宿业', '餐饮业'],
      '信息传输、软件和信息技术服务业': ['电信、广播电视和卫星传输服务', '互联网和相关服务', '软件和信息技术服务业'],
      '金融业': ['货币金融服务', '资本市场服务', '保险业', '其他金融业'],
      '房地产业': ['房地产业'],
      '租赁和商务服务业': ['租赁业', '商务服务业'],
      '科学研究和技术服务业': ['研究和试验发展', '专业技术服务业', '科技推广和应用服务业'],
      '水利、环境和公共设施管理业': ['水利管理业', '生态保护和环境治理业', '公共设施管理业', '土地管理业'],
      '居民服务、修理和其他服务业': ['居民服务业', '机动车、电子产品和日用产品修理业', '其他服务业'],
      '教育': ['教育'],
      '卫生和社会工作': ['卫生', '社会工作'],
      '文化、体育和娱乐业': [
        '新闻和出版业', '广播、电视、电影和录音制作业', '文化艺术业', '体育', '娱乐业'
      ],
      '公共管理、社会保障和社会组织': [
        '中国共产党机关', '国家机构', '人民政协、民主党派', '社会保障',
        '群众团体、社会团体和其他成员组织', '基层群众自治组织'
      ],
      '国际组织': ['国际组织']
    };

    // ZX战新产业分类（根据后端SQL数据）
    this.zxTags = {
      '新一代信息技术产业': ['下一代信息网络', '信息技术服务', '电子核心产业', '人工智能', '物联网', '新兴软件', '网络与信息安全'],
      '高端装备制造产业': ['智能制造装备', '航空装备', '卫星及应用', '海洋工程装备', '轨道交通装备'],
      '新材料产业': ['先进钢铁材料', '先进有色金属', '先进化工材料', '先进无机非金属', '高性能纤维及复合材料', '前沿新材料'],
      '生物产业': ['生物医药', '生物医学工程', '生物农业', '生物制造', '生物质能'],
      '新能源汽车产业': ['新能源汽车产品', '关键零部件', '充电/换电设施', '智能汽车技术'],
      '新能源产业': ['核电技术', '风能', '太阳能', '智能电网', '氢能'],
      '节能环保产业': ['高效节能', '先进环保', '资源循环利用'],
      '数字创意产业': ['数字文化技术', '创意设计服务', '数字内容制作'],
      '相关服务业': ['研发服务', '知识产权服务', '科技成果转化']
    };

    // 合并所有标签（为了保持向后兼容）
    this.tags = { ...this.gbTags, ...this.zxTags };

    // 标签编码映射（标签名 -> 编码）
    this.tagCodeMap = {};
    this.gbTagCodeMap = {};
    this.zxTagCodeMap = {};

    // 构建GB标签编码映射
    this.buildGbTagCodeMap();
    // 构建ZX标签编码映射
    this.buildZxTagCodeMap();
    // 合并所有编码映射
    this.tagCodeMap = { ...this.gbTagCodeMap, ...this.zxTagCodeMap };

    // 创建反向索引，用于快速查找二级标签所属的一级标签
    this.tagIndex = {}
    Object.entries(this.tags).forEach(([level1, level2Array]) => {
      level2Array.forEach(level2 => {
        this.tagIndex[level2] = level1
      })
    })
  }

  // 构建GB标签编码映射（根据后端数据库结构）
  buildGbTagCodeMap() {
    // GB一级标签编码
    const gbLevel1Codes = {
      '农、林、牧、渔业': 1,
      '采矿业': 2,
      '制造业': 3,
      '电力、热力生产和供应业': 4,
      '建筑业': 5,
      '批发和零售业': 6,
      '交通运输、仓储和邮政业': 7,
      '住宿和餐饮业': 8,
      '信息传输、软件和信息技术服务业': 9,
      '金融业': 10,
      '房地产业': 11,
      '租赁和商务服务业': 12,
      '科学研究和技术服务业': 13,
      '水利、环境和公共设施管理业': 14,
      '居民服务、修理和其他服务业': 15,
      '教育': 16,
      '卫生和社会工作': 17,
      '文化、体育和娱乐业': 18,
      '公共管理、社会保障和社会组织': 19,
      '国际组织': 20
    };

    // GB二级标签编码（根据后端SQL数据）
    const gbLevel2Codes = {
      // 农、林、牧、渔业 (1)
      '农业': '1-1',
      '林业': '1-2',
      '畜牧业': '1-3',
      '渔业': '1-4',
      '农、林、牧、渔业专业及辅助性活动': '1-5',
      
      // 采矿业 (2)
      '煤炭开采': '2-1',
      '石油和天然气开采': '2-2',
      '金属开采': '2-3',
      '开采专业及辅助性活动': '2-4',
      '其他采矿业': '2-5',
      
      // 制造业 (3)
      '农副产品加工': '3-1',
      '食品制造业': '3-2',
      '酒、饮料和精制茶制造业': '3-3',
      '烟草制品业': '3-4',
      '纺织业': '3-5',
      '纺织服装、服饰业': '3-6',
      '皮革、毛皮、羽毛及其制品和制鞋业': '3-7',
      '木材加工和木、竹、藤、棕、草制品业': '3-8',
      '家具制造业': '3-9',
      '造纸和纸制品业': '3-10',
      '印刷和记录媒介复制业': '3-11',
      '文教、工美、体育和娱乐用品制造业': '3-12',
      '石油、煤炭及其他燃料加工业': '3-13',
      '化学原料和化学制品制造业': '3-14',
      '医药制造业': '3-15',
      '橡胶和塑料制品业': '3-16',
      '非金属矿物制品业': '3-17',
      '黑色金属冶炼和压延加工业': '3-18',
      '有色金属冶炼和压延加工业': '3-19',
      '金属制品业': '3-20',
      '通用设备制造业': '3-21',
      '专用设备制造业': '3-22',
      '汽车制造业': '3-23',
      '铁路、船舶、航空航天和其他运输设备制造业': '3-24',
      '电气机械和器材制造业': '3-25',
      '计算机、通信和其他电子设备制造业': '3-26',
      '仪器仪表制造业': '3-27',
      '其他制造业': '3-28',
      '废弃资源综合利用业': '3-29',
      '金属制品、机械和设备修理业': '3-30',
      
      // 电力、热力生产和供应业 (4)
      '电力、热力生产和供应业': '4-1',
      '燃气生产和供应业': '4-2',
      '水的生产和供应业': '4-3',
      
      // 建筑业 (5)
      '房屋建筑业': '5-1',
      '土木工程建筑业': '5-2',
      '建筑安装业': '5-3',
      '建筑装饰、装修和其他建筑业': '5-4',
      
      // 批发和零售业 (6)
      '批发业': '6-1',
      '零售业': '6-2',
      
      // 交通运输、仓储和邮政业 (7)
      '铁路运输业': '7-1',
      '道路运输业': '7-2',
      '水上运输业': '7-3',
      '航空运输业': '7-4',
      '管道运输业': '7-5',
      '多式联运和运输代理业': '7-6',
      '装卸搬运和仓储业': '7-7',
      '邮政业': '7-8',
      
      // 住宿和餐饮业 (8)
      '住宿业': '8-1',
      '餐饮业': '8-2',
      
      // 信息传输、软件和信息技术服务业 (9)
      '电信、广播电视和卫星传输服务': '9-1',
      '互联网和相关服务': '9-2',
      '软件和信息技术服务业': '9-3',
      
      // 金融业 (10)
      '货币金融服务': '10-1',
      '资本市场服务': '10-2',
      '保险业': '10-3',
      '其他金融业': '10-4',
      
      // 房地产业 (11)
      '房地产业': '11-1',
      
      // 租赁和商务服务业 (12)
      '租赁业': '12-1',
      '商务服务业': '12-2',
      
      // 科学研究和技术服务业 (13)
      '研究和试验发展': '13-1',
      '专业技术服务业': '13-2',
      '科技推广和应用服务业': '13-3',
      
      // 水利、环境和公共设施管理业 (14)
      '水利管理业': '14-1',
      '生态保护和环境治理业': '14-2',
      '公共设施管理业': '14-3',
      '土地管理业': '15-1',
      
      // 居民服务、修理和其他服务业 (15)
      '居民服务业': '15-2',
      '机动车、电子产品和日用产品修理业': '15-3',
      '其他服务业': '15-4',
      
      // 教育 (16)
      '教育': '16-1',
      
      // 卫生和社会工作 (17)
      '卫生': '17-1',
      '社会工作': '17-2',
      
      // 文化、体育和娱乐业 (18)
      '新闻和出版业': '18-1',
      '广播、电视、电影和录音制作业': '18-2',
      '文化艺术业': '18-3',
      '体育': '18-4',
      '娱乐业': '18-5',
      
      // 公共管理、社会保障和社会组织 (19)
      '中国共产党机关': '19-1',
      '国家机构': '19-2',
      '人民政协、民主党派': '19-3',
      '社会保障': '19-4',
      '群众团体、社会团体和其他成员组织': '19-5',
      '基层群众自治组织': '19-6',
      
      // 国际组织 (20)
      '国际组织': '20-1'
    };

    this.gbTagCodeMap = { ...gbLevel1Codes, ...gbLevel2Codes };
  }

  // 构建ZX标签编码映射（根据后端数据库结构）
  buildZxTagCodeMap() {
    // ZX一级标签编码
    const zxLevel1Codes = {
      '新一代信息技术产业': 1,
      '高端装备制造产业': 2,
      '新材料产业': 3,
      '生物产业': 4,
      '新能源汽车产业': 5,
      '新能源产业': 6,
      '节能环保产业': 7,
      '数字创意产业': 8,
      '相关服务业': 9
    };

    // ZX二级标签编码（根据后端SQL数据）
    const zxLevel2Codes = {
      // 新一代信息技术产业 (1)
      '下一代信息网络': '1-1',
      '信息技术服务': '1-2',
      '电子核心产业': '1-3',
      '人工智能': '1-4',
      '物联网': '1-5',
      '新兴软件': '1-6',
      '网络与信息安全': '1-7',
      
      // 高端装备制造产业 (2)
      '智能制造装备': '2-1',
      '航空装备': '2-2',
      '卫星及应用': '2-3',
      '海洋工程装备': '2-4',
      '轨道交通装备': '2-5',
      
      // 新材料产业 (3)
      '先进钢铁材料': '3-1',
      '先进有色金属': '3-2',
      '先进化工材料': '3-3',
      '先进无机非金属': '3-4',
      '高性能纤维及复合材料': '3-5',
      '前沿新材料': '3-6',
      
      // 生物产业 (4)
      '生物医药': '4-1',
      '生物医学工程': '4-2',
      '生物农业': '4-3',
      '生物制造': '4-4',
      '生物质能': '4-5',
      
      // 新能源汽车产业 (5)
      '新能源汽车产品': '5-1',
      '关键零部件': '5-2',
      '充电/换电设施': '5-3',
      '智能汽车技术': '5-4',
      
      // 新能源产业 (6)
      '核电技术': '6-1',
      '风能': '6-2',
      '太阳能': '6-3',
      '智能电网': '6-4',
      '氢能': '6-5',
      
      // 节能环保产业 (7)
      '高效节能': '7-1',
      '先进环保': '7-2',
      '资源循环利用': '7-3',
      
      // 数字创意产业 (8)
      '数字文化技术': '8-1',
      '创意设计服务': '8-2',
      '数字内容制作': '8-3',
      
      // 相关服务业 (9)
      '研发服务': '9-1',
      '知识产权服务': '9-2',
      '科技成果转化': '9-3'
    };

    this.zxTagCodeMap = { ...zxLevel1Codes, ...zxLevel2Codes };
  }

  // 获取所有一级标签
  getLevel1Tags() {
    return Object.keys(this.tags)
  }

  // 获取指定一级标签下的二级标签
  getLevel2Tags(level1Tag) {
    return this.tags[level1Tag] || []
  }

  // 获取所有标签的层级结构
  getAllTags() {
    return this.tags
  }

  // 根据二级标签查找所属的一级标签
  findLevel1Tag(level2Tag) {
    return this.tagIndex[level2Tag]
  }

  // 搜索标签（支持模糊匹配）
  searchTags(query, options = {}) {
    const { includeLevel1 = true, includeLevel2 = true, limit = 20 } = options
    const results = []
    const queryLower = query.toLowerCase()

    if (includeLevel1) {
      Object.keys(this.tags).forEach(level1 => {
        if (level1.toLowerCase().includes(queryLower)) {
          results.push({
            tag: level1,
            level: 1,
            parent: null
          })
        }
      })
    }

    if (includeLevel2) {
      Object.entries(this.tags).forEach(([level1, level2Array]) => {
        level2Array.forEach(level2 => {
          if (level2.toLowerCase().includes(queryLower)) {
            results.push({
              tag: level2,
              level: 2,
              parent: level1
            })
          }
        })
      })
    }

    return results.slice(0, limit)
  }

  // 获取热门标签（这里可以根据实际使用情况调整）
  getPopularTags(count = 10) {
    const popularTags = [
      '农副产品加工', '食品制造业', '酒、饮料和精制茶制造业', '烟草制品业', '纺织业', '纺织服装、服饰业',
      '皮革、毛皮、羽毛及其制品和制鞋业', '木材加工和木、竹、藤、棕、草制品业', '家具制造业',
      '造纸和纸制品业'
    ]
    return popularTags.slice(0, count)
  }

  // 获取推荐标签（基于用户输入）
  getRecommendedTags(userInput, count = 8) {
    if (!userInput) return this.getPopularTags(count)

    const searchResults = this.searchTags(userInput, { limit: count * 2 })

    // 优先显示二级标签
    const level2Tags = searchResults.filter(r => r.level === 2).slice(0, count)
    const level1Tags = searchResults.filter(r => r.level === 1).slice(0, count - level2Tags.length)

    return [...level2Tags, ...level1Tags].slice(0, count)
  }

  // 格式化标签显示
  formatTag(tagInfo) {
    if (tagInfo.level === 1) {
      return tagInfo.tag
    } else {
      return `${tagInfo.parent} - ${tagInfo.tag}`
    }
  }

  // === 新增：后端API兼容方法 ===

  // 获取GB标签（国标行业分类）
  getGbTags() {
    return this.gbTags;
  }

  // 获取ZX标签（战新产业分类）
  getZxTags() {
    return this.zxTags;
  }

  // 根据标签名获取编码（支持GB和ZX）
  getTagCode(tagName) {
    return this.tagCodeMap[tagName] || null;
  }

  // 根据标签名获取GB编码
  getGbTagCode(tagName) {
    return this.gbTagCodeMap[tagName] || null;
  }

  // 根据标签名获取ZX编码
  getZxTagCode(tagName) {
    return this.zxTagCodeMap[tagName] || null;
  }

  // 将标签名数组转换为编码数组（用于后端API调用）
  convertTagsTosCodes(tagNames) {
    return tagNames.map(tagName => this.getTagCode(tagName)).filter(code => code !== null);
  }

  // 将标签名数组转换为GB编码数组
  convertTagsToGbCodes(tagNames) {
    return tagNames.map(tagName => this.getGbTagCode(tagName)).filter(code => code !== null);
  }

  // 将标签名数组转换为ZX编码数组
  convertTagsToZxCodes(tagNames) {
    return tagNames.map(tagName => this.getZxTagCode(tagName)).filter(code => code !== null);
  }

  // 判断标签是否为GB标签
  isGbTag(tagName) {
    return this.gbTagCodeMap.hasOwnProperty(tagName);
  }

  // 判断标签是否为ZX标签
  isZxTag(tagName) {
    return this.zxTagCodeMap.hasOwnProperty(tagName);
  }

  // 获取所有标签的分类数据结构（适配后端API）
  getStructuredTags() {
    return {
      gb: this.gbTags,
      zx: this.zxTags,
      all: this.tags
    };
  }

  // 获取热门标签（混合GB和ZX）
  getPopularTagsStructured(count = 10) {
    const gbPopular = ['农副产品加工', '食品制造业', '软件和信息技术服务业', '电子核心产业', '新能源汽车产品'];
    const zxPopular = ['人工智能', '新兴软件', '生物医药', '新能源产业', '数字创意产业'];
    
    const mixed = [];
    const maxEach = Math.ceil(count / 2);
    
    for (let i = 0; i < maxEach && i < gbPopular.length; i++) {
      mixed.push(gbPopular[i]);
    }
    for (let i = 0; i < maxEach && i < zxPopular.length && mixed.length < count; i++) {
      mixed.push(zxPopular[i]);
    }
    
    return mixed.slice(0, count);
  }

  // 根据分类获取标签
  getTagsByCategory(category) {
    switch (category) {
      case 'gb':
      case 'national':
        return this.gbTags;
      case 'zx':
      case 'strategic':
        return this.zxTags;
      default:
        return this.tags;
    }
  }
}

// 创建单例实例
export const tagService = new TagService()

// 默认导出
export default tagService 